# 课本第二章
stu_id=[1001,123,10001,1001,1001,1002]

#实验1 赋值与copy  用pop来检验matedata的效果
#思考，赋值是真正的复制吗？赋值（=）是copy？不等价
#matedata尝试
#stu_id_matedata  = stu_id
#print("stu_id:", stu_id, '\n', 'stu_id_matedata:', stu_id_matedata)
# '\n'为换行号
#输出结果看出为一模一样的输出结果，看得出matedata不能起到备份作用，只是刻板地复制

#实验2 copy 依旧使用pop来检验，看看mate与copy的区别
stu_id_matedata = stu_id.copy()
stu_id.pop(1)
print("stu_id:", stu_id, '\n', 'stu_id_matedata:', stu_id_matedata)
# 实验结果看出copy是对源数据的完全复制，不受源数据受处理行为的影响。可以用来备份数据，
# 总结copy是完全的不受影响的真正的复制行为。

#实验3 切片实现赋值
stu_id_matedata = stu_id[:]
stu_id.pop(1)
print("stu_id:",stu_id,'\n','stu_id_matedata:',stu_id_matedata)

#枚举 索引实验
stu_id1=[10001,123,10001,1003,10001,1002]
pop_values_list=[] #append方法经常用于新建列表
#思考，如何取出所有10001的index？
for i in stu_id1:
    # 循环遍历stu_id的所有内容
    if i == 10001:
    #判断元素为10001的时候，怎么取出索引值呢？
       print(stu_id1.index(10001))
        #缺陷：只能找到第一位，即0

# enumerate 枚举(也就是告诉你索引对应内容）：因为list其实不仅有values值还有index索引，但for循环主要循环便利其值，不遍历索引值
#因此有了枚举的方法
for index,item in enumerate(stu_id):
    #print(index,item)
    if item == 10001:
        print (index,item)
        pop_values_list.append(index)
print("想删的值：",pop_values_list)
# 总结利用枚举的方式来找到值并且输出其所处位置，将其删除，补充了index只能找相同数值里面首个值的位置的不足
